
#ifndef MENUS_H_
#define MENUS_H_

#include<iostream>
#include<fstream>
#include<iomanip>
#include<string>
using namespace std;

class Users
{
public:
    Users();
    Users(string userName, string passWord);
    virtual ~Users();

    //Methods for navigating through the menu system for SAWT - KZ
    virtual void MainMenu();
    void PlanTripMenu();
    void ShortestTripMenu();
    void CustomTripMenu();
    void TakeTripMenu();
    void WineryMenu();
	void VillaMenu();

	//Each function call below displays the appropriate menu from the respective call - KZ
	virtual void DisplayMainMenu();
	void DisplayPlanTripMenu();
	void DisplayShortestTripMenu();
	void DisplayCustomTripMenu();
	void DisplayTakeTripMenu();
	void DisplayWineryMenu();
	void DisplayVillaMenu();

	//Separates space between menus and displays a divider - KZ
	void PrintSpacer();

private:
    string username;
    string password;
};

//Admins can do file maintenace that Users cannot do
class Admin : public Users
{
public:
    Admin();
    Admin(string userName, string passWord);
    ~Admin();

    //Methods for Administrators only
    void MainMenu();
    void DisplayMainMenu();
    void MaintenanceMenu();
    void DisplayMaintenanceMenu();
};

void Menus(Users& theUser);
void Splash();

#endif /* MENUS_H_ */
